<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <title>XML解析</title>
    </head>
    <body>
<!--
      XML解析:操作xml文档,将文档中的数据读取到内存中
操作xml文档:
          1.解析(读取):将文档中的数据读取到内存中
          2.写入:将内存中的数据保存到xml文档中.持久化存储
解析xml方式:
          1.DOM: 将标记语言文档一次性加载进内存,在内存中会形成一颗DOM树
                 优点:操作方便,可以对文档进行CRUD的所有操作
                 确定:占内存
                 适用于服务器端设备

          2.SAX: 逐行读取,基于事件驱动 在内存中读取一行就释放一行
                 优点:不占内存
                 确定:只能读取,不能增删改
                 适用于内存较小的设备 比如手机

xml的常见解析器:
         1.JAXP:sun公司提供的解析器,支持dom和sax两种思想 (性能低 代码麻烦 )
         2.DOM4J:一款非常优秀的解析器
         3.Jsoup:jsoup 是一款Java 的HTML解析器，可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API，
　                可通过DOM，CSS以及类似于jQuery的操作方法来取出和操作数据
         4.PULL:Android操作系统内置的解析器,SAX方式的

Jsoup的使用方式:
        步骤: 1.导入jar包
             2.获取Document对象
             3.获取对应的标签(元素对象)
             4.获取数据
        public class JsoupDemo1{

               public static void main(String[] args) throws IOException{
             //2.获取Document对象
             //2.1获取xml文件的path
       String path= 6JsoupDemo1.class.getClassLoader().getResource("student.xml").getpath();
              //2.2解析xml文档,加载文档进内存 获取dom树-->Document
        Document document=Jsoup.parse(new File(path),"utf-8");
             //3.获取元素对象
        Elements elements= document.getElementsByTag("name")
        System.out.println(elements.size());
        //3.1获取第一个name的Element对象
        Element element=elements.get(0);
        //3.2获取数据
        String name=element.text()
        System.out.println(name);
        }



Jsoup中的对象:
        1. Jsoup：工具类，可以解析html或xml文档，返回Document
            * parse：解析html或xml文档，返回Document
            * parse​(File in, String charsetName)：解析xml或html文件的。
            * parse​(String html)：解析xml或html字符串
            * parse​(URL url, int timeoutMillis)：通过网络路径获取指定的html或xml的文档对象

        2. Document：文档对象。代表内存中的dom树
           * 获取Element对象
           * getElementById​(String id)：根据id属性值获取唯一的element对象
           * getElementsByTag​(String tagName)：根据标签名称获取元素对象集合
           * getElementsByAttribute​(String key)：根据属性名称获取元素对象集合
           * getElementsByAttributeValue​(String key, String value)：根据对应的属性名和属性值获取元素对象集合

        3. Elements：元素Element对象的集合。可以当做 ArrayList<Element>来使用

        4. Element：元素对象
            1. 获取子元素对象
              * getElementById​(String id)：根据id属性值获取唯一的element对象
              * getElementsByTag​(String tagName)：根据标签名称获取元素对象集合
              * getElementsByAttribute​(String key)：根据属性名称获取元素对象集合
              * getElementsByAttributeValue​(String key, String value)：根据对应的属性名和属性值获取元素对象集合

            2. 获取属性值
               * String attr(String key)：根据属性名称获取属性值
            3. 获取文本内容
               * String text():获取所有子标签的纯文本内容
               * String html():获取标签体的所有内容(包括子标签的标签和文本内容)
        5. Node：节点对象
             * 是Document和Element的父类


        * 快捷查询方式：
        1. selector:选择器
                    * 使用方法：Elements  select​(String cssQuery)
                              cssQuery按照以前css选择器名字来做
                             * 语法：参考Selector类中定义的语法
        2. XPath：XPath即为XML路径语言，它是一种用来确定XML（标准通用标记语言的子集）文档中某部分位置的语言
                  * 使用Jsoup的Xpath需要额外导入jar包。
                  * 查询w3cshool参考手册，使用xpath的语法完成查询
 -->
    </body>
</html>